// GenericBarcode.js - 通用条码基类（模板类）
// 可作为 Code39、Code128、ITF 等自定义条码的基类

import Barcode from '../Barcode.js';

/**
 * 通用条码类（抽象基类）
 * 用于派生具体条码类型（如 Code39、Code128）
 * 子类需重写 encode() 和 valid() 方法
 */
export class GenericBarcode extends Barcode {
	/**
	 * 构造函数
	 * @param {string} data - 原始输入数据
	 * @param {Object} options - 配置项（如 width, height, fontSize, displayValue 等）
	 */
	constructor(data, options) {
		super(data, options);
		// 此处可添加通用初始化逻辑（如果需要）
	}

	/**
	 * 编码核心方法（子类必须重写）
	 * 返回二进制字符串（'1' = 黑条，'0' = 白空）
	 * @returns {{ data: string, text: string }}
	 *
	 * 示例返回：
	 * {
	 *   data: '10101110', // 二进制流
	 *   text: '12345'     // 显示文本
	 * }
	 */
	encode() {
		return {
			data: '10101010101010101010101010101010101010101',
			text: this.text,
		};
	}

	/**
	 * 验证输入数据是否有效（子类应重写）
	 * 默认返回 true（允许任意字符串）
	 * @returns {boolean}
	 */
	valid() {
		return true;
	}
}
